package com.bbz.jvm.core.chapter1.OutOfMemoryError;

import java.util.ArrayList;
import java.util.List;

/**
 * 方法区和运行时常量池溢出
 * VM args: -XX:PermSize=10M -XX:MaxPermSize=10M
 * VM args 参数说明：限制方法区大小为10M。 因为最小，最大都是10M，所以不会进行自动扩展
 * @author Zhang
 *
 */
public class RuntimeConstantPoolOOM {

	public static void main(String args[]) {
		//使用List 保持着常量池引用，避免Full GC 回收常量池
		List<String> list=new ArrayList<String>();
		//10M的permSize 在integer范围内足够生产OOM了
		int i=0;
		while(true) {
			list.add(String.valueOf(i++).intern());
		}
	}
}
